#ifndef __LINKQUEUE_H__
#define __LINKQUEUE_H__

#include "../linklist/linklist.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define null NULL

typedef void LinkQueue;
typedef void LinkQueueNode;

// 定义队列的业务节点类型
typedef struct _tag_LinkQueueNode
{
    LinkListNode node;   // 链表的业务节点
    LinkQueueNode *item; // 队列的业务节点
} TLinkQueueNode;

typedef struct func_LinkQueue
{
    LinkQueue *(*create)();
    int (*destroy)(LinkQueue *);
    int (*clear)(LinkQueue *);
    int (*length)(LinkQueue *);
    int (*append)(LinkQueue *, LinkQueueNode *);
    LinkQueueNode *(*header)(LinkQueue *);
    LinkQueueNode *(*subtract)(LinkQueue *);
} func_LinkQueue;

extern func_LinkQueue fLinkQueue;

#endif
